<?php

class ShowsController extends AppController {

    var $name = 'Shows';
    var $uses = array('Show', 'Costume', 'CostumesShow');

    function index() {
        $this->Show->recursive = 0;
        $this->paginate['order'] = array('Show.name' => 'ASC');
        $this->set('shows', $this->paginate(array('deleted' => 0)));
    }

    function view($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Show Inexistente', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('show', $this->Show->read(null, $id));
    }

    function add() {
        if (!empty($this->data)) {
            $datos = $this->data;

            //empiezo una transaccion
            $this->Show->query('SET AUTOCOMMIT = 0;');
            $this->Show->query('START TRANSACTION;');
            $bandera = true; //la uso para ver si algo salio mal
            $this->Show->create();
            if (!$this->Show->save($datos)) {
                $bandera = false;
            }
            //tomo el id del show
            $show_id = $this->Show->id;
            //y ahora voy guardando la relación con los trajes
            $i = 1;
            for ($i; $i <= $datos['Show']['count_costumes']; $i++) {
                $array_guardar = array();
                $array_guardar['costume_id'] = $datos['Show']['costume_' . $i];
                $array_guardar['show_id'] = $show_id;
                $array_guardar['default'] = $datos['Show']['costume_check_' . $i];

                $this->CostumesShow->create();
                if (!$this->CostumesShow->save($array_guardar)) {
                    $bandera = false;
                }
            }

            if ($bandera) {
                $this->Session->setFlash(__('El Show ha sido creado', true));
                $this->Show->query('COMMIT;');
                $this->Show->query('SET AUTOCOMMIT = 1;');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('El Show no ha sido creado. Por favor, intente nuevamente.', true));
                $this->Show->query('ROLLBACK;');
                $this->Show->query('SET AUTOCOMMIT = 1;');
            }
        }

        $costumes = $this->Costume->find('list');
        $this->set(compact('costumes'));
    }

    function edit($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Show Inexistente', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {

            $datos = $this->data;
            
            //empiezo una transaccion
            $this->Show->query('SET AUTOCOMMIT = 0;');
            $this->Show->query('START TRANSACTION;');
            $bandera = true; //la uso para ver si algo salio mal
            
            if (!$this->Show->save($datos)) {
                $bandera = false;
            }

            //ahora borro todas las relaciones entre trajes y este show
            if (!$this->CostumesShow->deleteAll(array('CostumesShow.show_id' => $datos['Show']['id']), false, false)) {
                $bandera = false;
            }

            //y ahora voy guardando la relación con los trajes
            $i = 1;
            for ($i; $i <= $datos['Show']['count_costumes']; $i++) {
                $array_guardar = array();
                $array_guardar['costume_id'] = $datos['Show']['costume_' . $i];
                $array_guardar['show_id'] = $datos['Show']['id'];
                $array_guardar['default'] = $datos['Show']['costume_check_' . $i];

                $this->CostumesShow->create();
                if (!$this->CostumesShow->save($array_guardar)) {
                    $bandera = false;
                }
            }

            if ($bandera) {
                $this->Session->setFlash(__('El Show ha sido editado', true));
                $this->Show->query('COMMIT;');
                $this->Show->query('SET AUTOCOMMIT = 1;');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('El Show no ha sido editado. Por favor, intente nuevamente.', true));
                $this->Show->query('ROLLBACK;');
                $this->Show->query('SET AUTOCOMMIT = 1;');
            }
        }
        if (empty($this->data)) {
            $this->data = $this->Show->read(null, $id);
            //armamos los datos para que sean levantados en la vista
            if (!empty($this->data['Costume'])) {
                $this->data['Show']['count_costumes'] = count($this->data['Costume']);
                $i = 0;
                foreach ($this->data['Costume'] as $costume) {
                    $i++;
                    $this->data['Show']['costume_' . $i] = $costume['id'];
                    $this->data['Show']['costume_check_' . $i] = $costume['CostumesShow']['default'];
                }
            }
        }

        $costumes = $this->Costume->find('list');
        $this->set(compact('costumes'));
    }

    function delete($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Show Inexistente', true));
            $this->redirect(array('action' => 'index'));
        }

        $this->Show->id = $id;
        if ($this->Show->saveField('deleted', 1)) {

            $this->Session->setFlash('El Show ha sido eliminado');
            $this->redirect(array('action' => 'index'));
        }
        $this->Session->setFlash('El Show no ha sido eliminado. Por favor, intente nuevamente.');
        $this->redirect(array('action' => 'index'));
    }

}
